package ar.uba.fi.algo3.algoTank.model.formas;

import java.util.ArrayList;
import ar.uba.fi.algo3.algoTank.model.Vector;

public class Rectangulo extends Figura {

	private int altura;

	private int base;

	public Rectangulo(int base, int altura, Vector posicion) {
		super(posicion);
		this.base = base;
		this.altura = altura;
	}

	private ArrayList<Vector> getPuntosVertices(Vector puntoInicial) {
		Vector temporal = new Vector(puntoInicial.getCoordX(), puntoInicial.getCoordY());
		ArrayList<Vector> puntosVertices = new ArrayList<Vector>();
		puntosVertices.add(new Vector(temporal.getCoordX(), temporal.getCoordY()));
		temporal.sumarVector(new Vector(base, 0));
		puntosVertices.add(new Vector(temporal.getCoordX(), temporal.getCoordY()));
		temporal = new Vector(puntoInicial.getCoordX(), puntoInicial.getCoordY());
		temporal.sumarVector(new Vector(0, altura));
		puntosVertices.add(new Vector(temporal.getCoordX(), temporal.getCoordY()));
		temporal = new Vector(puntoInicial.getCoordX(), puntoInicial.getCoordY());
		temporal.sumarVector(new Vector(base, altura));
		puntosVertices.add(new Vector(temporal.getCoordX(), temporal.getCoordY()));
		return puntosVertices;
	}

	public boolean hayInterseccion(Figura figura) {
		ArrayList<Vector> puntosVerticesPropio = getPuntosVertices(getPosicion());
		ArrayList<Vector> puntosVerticesOtroObjeto = ((Rectangulo) figura).getPuntosVertices(figura.getPosicion());

		return (puntosVerticesPropio.get(1).getCoordX() >= puntosVerticesOtroObjeto.get(2).getCoordX())
				& (puntosVerticesPropio.get(0).getCoordX() <= puntosVerticesOtroObjeto.get(1).getCoordX())
				& (puntosVerticesPropio.get(1).getCoordY() <= puntosVerticesOtroObjeto.get(3).getCoordY())
				& (puntosVerticesPropio.get(2).getCoordY() >= puntosVerticesOtroObjeto.get(1).getCoordY());
	}

	public Vector getTamanio() {
		Vector vector = new Vector(base, altura);
		return vector;
	}

}
